/*DEBUG OPTIONS*/
#define BOUNDS_CHECK
#define TYPE_CHECK //internal checks that contexts are contexts and methods are methods, etc
//#define PRINT_SENDS
//#define PRINT_RETURNS
//#define PRINT_BYTECODES
//#define PRINT_PRIMITIVES
//#define STEP_SENDS

// Squeak Headers
#define HeaderTypeMask 3 
#define HeaderTypeSizeAndClass 0  //3-word header
#define HeaderTypeClass 1         //2-word header
#define HeaderTypeFree 2          //free block
#define HeaderTypeShort 3         //1-word header

//Indices into SpecialObjects array
#define splOb_NilObject 0 
#define splOb_FalseObject 1 
#define splOb_TrueObject 2 
#define splOb_SchedulerAssociation 3 
#define splOb_ClassBitmap 4 
#define splOb_ClassInteger 5 
#define splOb_ClassString 6 
#define splOb_ClassArray 7 
//#define splOb_SmalltalkDictionary 8   old slot 8
#define splOb_ClassFloat 9 
#define splOb_ClassMethodContext 10 
#define splOb_ClassBlockContext 11 
#define splOb_ClassPoint 12 
#define splOb_ClassLargePositiveInteger 13 
#define splOb_TheDisplay 14 
#define splOb_ClassMessage 15 
#define splOb_ClassCompiledMethod 16 
#define splOb_TheLowSpaceSemaphore 17 
#define splOb_ClassSemaphore 18 
#define splOb_ClassCharacter 19 
#define splOb_SelectorDoesNotUnderstand 20 
#define splOb_SelectorCannotReturn 21 
#define splOb_TheInputSemaphore 22 
#define splOb_SpecialSelectors 23 
#define splOb_CharacterTable 24 
#define splOb_SelectorMustBeBoolean 25 
#define splOb_ClassByteArray 26 
#define splOb_ClassProcess 27 
#define splOb_CompactClasses 28 
#define splOb_TheTimerSemaphore 29 
#define splOb_TheInterruptSemaphore 30 
#define splOb_FloatProto 31 
#define splOb_SelectorCannotInterpret 34 
#define splOb_MethodContextProto 35 
#define splOb_BlockContextProto 37 
#define splOb_ExternalObjectsArray 38 
#define splOb_ClassPseudoContext 39 
#define splOb_ClassTranslatedMethod 40 
#define splOb_TheFinalizationSemaphore 41 
#define splOb_ClassLargeNegativeInteger 42 
#define splOb_ClassExternalAddress 43 
#define splOb_ClassExternalStructure 44 
#define splOb_ClassExternalData 45 
#define splOb_ClassExternalFunction 46 
#define splOb_ClassExternalLibrary 47 
#define splOb_SelectorAboutToReturn 48 

	
// Class layout:
#define Class_superclass 0 
#define Class_mdict 1 
#define Class_format 2 
#define Class_name 6 

// Context layout
#define Context_sender 0 
#define Context_instructionPointer 1 
#define Context_stackPointer 2 
#define Context_method 3 
#define Context_receiver 5 
#define Context_tempFrameStart 6 
#define Context_smallFrameSize 17 
#define Context_largeFrameSize 57 
#define BlockContext_caller 0 
#define BlockContext_argumentCount 3 
#define BlockContext_initialIP 4 
#define BlockContext_home 5 
       // Stream layout:
#define Stream_array 0 
#define Stream_position 1 
#define Stream_limit 2 
//Class ProcessorScheduler"
#define ProcSched_processLists 0 
#define ProcSched_activeProcess 1 
//Class Link"
#define Link_nextLink 0 
//Class LinkedList"
#define LinkedList_firstLink 0 
#define LinkedList_lastLink 1 
//Class Semaphore"
#define Semaphore_excessSignals 2 
//Class Process"
#define Proc_suspendedContext 1 
#define Proc_priority 2 
#define Proc_myList 3 	
// Association layout:
#define Assn_key 0 
#define Assn_value 1 
// MethodDict layout:
#define MethodDict_array 1 
#define MethodDict_selectorStart 2 
       // Message layout
#define Message_selector 0 
#define Message_arguments 1 
#define Message_lookupClass 2 
// Point layout:
#define Point_x 0 
#define Point_y 1 
// Largetinteger layout:
#define Largeinteger_bytes 0 
#define Largeinteger_neg 1 
// Bitblt layout:
#define Bitblt_function 0 
#define Bitblt_gray 1 
#define Bitblt_destbits 2 
#define Bitblt_destraster 3 
#define Bitblt_destx 4 
#define Bitblt_desty 5 
#define Bitblt_width 6 
#define Bitblt_height 7 
#define Bitblt_sourcebits 8 
#define Bitblt_sourceraster 9 
#define Bitblt_sourcex 10 
#define Bitblt_sourcey 11 
#define Bitblt_clipx 12 
#define Bitblt_clipy 13 
#define Bitblt_clipwidth 14 
#define Bitblt_clipheight 15 
#define Bitblt_sourcefield 16 
#define Bitblt_destfield 17 
#define Bitblt_source 18 
#define Bitblt_dest 19 
// Form layout:
#define Form_bits 0 
#define Form_width 1 
#define Form_height 2 
#define Form_depth 3 
